#ifndef __ITEMTYPE_H__
#define __ITEMTYPE_H__

#include <iostream>
using namespace std;

template <class T>
class ItemType
{
	T m_data;
	ItemType<T>* m_next;

public:
	//Geters
	T& getData() {return m_data;} 
	ItemType<T>* getNext() const {return m_next;}

	//Seters
	void setNext(ItemType<T>* const ptr) {m_next = ptr;}
	void set(const T& data) {m_data.set(data);}

	//C'tors and D'tors
	ItemType();
	ItemType(T itemTypeData, ItemType<T>* ptr=NULL);
	~ItemType() {delete m_next;}
};

#include "ItemType.cpp"
#endif